package helloword;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;
import utils.RabbitMqUtils;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Provider {
    @Test
    public void  testSendMessage() throws IOException, TimeoutException {

        /*//创建连接MQ的连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置连接rabbitMq主机IP
        connectionFactory.setHost("192.168.199.128");
        //设置端口号（amqp协议的端口号）
        connectionFactory.setPort(5672);
        //设置连接哪一个虚拟主机（连接虚拟主机的名字）
        connectionFactory.setVirtualHost("/ems");
        //设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("admin");
        connectionFactory.setPassword("admin");

        //获取连接对象
        Connection connection = connectionFactory.newConnection();*/

        //通过工具类获取连接对象
        Connection connection = RabbitMqUtils.getConnection();

        //获取连接通道
        Channel channel = connection.createChannel();

        //通道绑定对应的消息队列
        /*参数1：队列名称（如果不存在就自动创建）
          参数2：用来定义消息队列的特性是否要持久化 true：持久化 false：不持久化
          参数3：exclusive是否独占队列
          参数4：autoDelete:是否在消费完成后自动删除队列
          参数5：额外附加参数
        * */
        channel.queueDeclare(
                "hello",
                true,
                false,
                true,
                null
                );
        //发布消息
        /*参数1：交换机名称
          参数2：队列名称
          参数3：传递消息额外设置
          参数4：详细的具体内容
        * */
        channel.basicPublish(
                "",
                "hello",
                MessageProperties.PERSISTENT_TEXT_PLAIN,
                "Hello RabbitMQ".getBytes()
                );
        /*//关闭通道和连接
        channel.close();
        connection.close();*/
        //通过工具类关闭连接对象
        RabbitMqUtils.closeConnectionAndChannel(connection, channel);


    }
}
